package com.tang.script.functions;

import java.util.HashMap;

public class DefaultCacheLoaderFunctionLoader implements FunctionLoader {
    FunctionLoader loader = new DefaultFunctionLoader();
    private final HashMap<String, Object> cache = new HashMap<>();

    @Override
    public Object loadFunction(String functionName) {
        if (cache.containsKey(functionName)) {
            return cache.get(functionName);
        }
        Object o = null;
        synchronized (cache) {
            if (!cache.containsKey(functionName)) {
                cache.put(functionName, o = loader.loadFunction(functionName));
            } else {
                o = cache.get(functionName);
            }
        }
        return o;
    }
}
